StThemeNode *new_theme_node = st_widget_get_theme_node (widget);
int transition_duration;
StSettings *settings;
- gboolean paint_equal;
+ gboolean paint_equal, geometry_equal = FALSE;
gboolean animations_enabled;
if (new_theme_node == old_theme_node)
_st_theme_node_apply_margins (new_theme_node, CLUTTER_ACTOR (widget));
- if (!old_theme_node ||
- !st_theme_node_geometry_equal (old_theme_node, new_theme_node))
+ if (old_theme_node)
+ geometry_equal = st_theme_node_geometry_equal (old_theme_node, new_theme_node);
+ if (!geometry_equal)
clutter_actor_queue_relayout ((ClutterActor *) widget);
transition_duration = st_theme_node_get_transition_duration (new_theme_node);
st_theme_node_paint_state_invalidate (current_paint_state (widget));
}
- g_signal_emit (widget, signals[STYLE_CHANGED], 0);
+ if (!paint_equal || !geometry_equal)
+ g_signal_emit (widget, signals[STYLE_CHANGED], 0);
+ else
+ notify_children_of_style_change ((ClutterActor *) widget);
+
priv->is_style_dirty = FALSE;
}